package it.nard.controller;

import it.nard.sourceframes.MainFrame;

import java.io.Reader;

import javax.swing.SwingUtilities;
import javax.swing.UIManager;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;


public class MainController {

	private static SqlSessionFactory sqlSessionFactory;
	private static Reader reader; 
	
	private static AllevatoriController allevatoriController = new AllevatoriController();
	private static LatteInEntrataController latteInEntrataController= new LatteInEntrataController();
	private static LatteInGiacenzaController latteInGiacenzaController= new LatteInGiacenzaController();
	private static LatteInUscitaController latteInUscitaController= new LatteInUscitaController();
	private static RMozzarellaController rMozzarellaController= new RMozzarellaController();
	private static RProvolaController rProvolaController= new RProvolaController();
	private static RRicottaController rRicottaController= new RRicottaController();
	
	private static AnalisiProduzioneController analisiProduzioneController= new AnalisiProduzioneController();
	private static AnalisiLatteController analisiLatteController= new AnalisiLatteController();
	private static GeneraReportController generaReportController= new GeneraReportController();
	
	private static CellaFrigoRefrigeranteController cellaFrigoRefrigeranteController= new CellaFrigoRefrigeranteController();
	private static InfestantiDerattizzazioneController infestantiDerattizzazioneController= new InfestantiDerattizzazioneController();
	private static ControlloLatteTemperaturaController controlloLatteTemperaturaController= new ControlloLatteTemperaturaController();
	private static LavaggioController lavaggioController= new LavaggioController();
	
	

	static {
		try{
			
			reader	  = Resources.getResourceAsReader("configuration.xml");
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);	
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public static void main(String args[]){
		 try {
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
		
		
	
		
		SwingUtilities.invokeLater(new Runnable() {
			
			public void run() {
				final MainFrame mf = new MainFrame();
				BasicController.mainFrame = mf;
				mf.getContent().add(MainController.getLatteInEntrataController().getMainPanel());

				mf.setLocationRelativeTo(null);
				mf.setVisible(true);
			}
		});
		
	}

	
	
	
	
	
	
	public static LatteInEntrataController getLatteInEntrataController() {
		return latteInEntrataController;
	}




	public static AllevatoriController getAllevatoriController() {
		return allevatoriController;
	}

	public static LatteInGiacenzaController getLatteInGiacenzaController() {
		return latteInGiacenzaController;
	}


	

	public static LatteInUscitaController getLatteInUscitaController() {
		return latteInUscitaController;
	}

	public static RMozzarellaController getRMozzarellaController() {
		return rMozzarellaController;
	}
	
	public static RProvolaController getRProvolaController() {
		return rProvolaController;
	}
	public static RRicottaController getRRicottaController() {
		return rRicottaController;
	}
	

	public static AnalisiProduzioneController getAnalisiProduzioneController() {
		return analisiProduzioneController;
	}







	public static GeneraReportController getGeneraReportController() {
		return generaReportController;
	}







	public static AnalisiLatteController getAnalisiLatteController() {
		return analisiLatteController;
	}


	




	public static CellaFrigoRefrigeranteController getCellaFrigoRefrigeranteController() {
		return cellaFrigoRefrigeranteController;
	}



	



	public static InfestantiDerattizzazioneController getInfestantiDerattizzazioneController() {
		return infestantiDerattizzazioneController;
	}


	




	public static LavaggioController getLavaggioController() {
		return lavaggioController;
	}







	public static ControlloLatteTemperaturaController getControlloLatteTemperaturaController() {
		return controlloLatteTemperaturaController;
	}







	public static SqlSessionFactory getSqlSessionFactory(){
		return sqlSessionFactory;
	}
}

